///*******************************************************************************
// * Copyright (c) 2004, 2007 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.tests.session;
//
//import junit.framework.TestCase;
//import junit.framework.TestSuite;
//
//import org.eclipse.core.resources.IFile;
//import org.eclipse.core.resources.IProject;
//import org.eclipse.jface.util.IPropertyChangeListener;
//import org.eclipse.jface.util.PropertyChangeEvent;
//import org.eclipse.ui.IEditorInput;
//import org.eclipse.ui.IEditorPart;
//import org.eclipse.ui.IEditorReference;
//import org.eclipse.ui.IWorkbench;
//import org.eclipse.ui.IWorkbenchPage;
//import org.eclipse.ui.IWorkbenchPart3;
//import org.eclipse.ui.PlatformUI;
//import org.eclipse.ui.ide.IDE;
//import org.eclipse.ui.part.FileEditorInput;
//import org.eclipse.ui.tests.api.workbenchpart.TitleTestEditor;
//import org.eclipse.ui.tests.harness.util.FileUtil;
//
///**
// * If a view is not activated during a session, it's part is not instantiated.
// * This tests that case, and the outcome should be the view has it's last
// * session state when it is finally instantiated in the workbench.
// *
// * @since 3.3
// */
//public class ArbitraryPropertiesEditorTest extends TestCase {
// /**
// *
// */
// private static final String USER_PROP = "org.eclipse.ui.tests.users";
//
// private static final String EDITOR_ID = "org.eclipse.ui.tests.TitleTestEditor";
//
// public static TestSuite suite() {
// return new TestSuite(ArbitraryPropertiesEditorTest.class);
// }
//
// public ArbitraryPropertiesEditorTest(String testName) {
// super(testName);
// }
//
// /**
// * This is the first part of a 3 part tests. First instantiate a view and
// * set a state.
// *
// * @throws Throwable
// */
// public void testOpenEditor() throws Throwable {
// final IWorkbench workbench = PlatformUI.getWorkbench();
// final IWorkbenchPage page = workbench.getActiveWorkbenchWindow()
// .getActivePage();
//
// IProject proj = FileUtil.createProject("EditorSessionTest");
// IFile file = FileUtil.createFile("state.txt", proj);
//
// TitleTestEditor editor = (TitleTestEditor) page.openEditor(
// new FileEditorInput(file), EDITOR_ID);
//
// // this makes the second file active on the first
// file = FileUtil.createFile("state_active.txt", proj);
// IDE.openEditor(page, file);
//
// editor.setPartProperty(USER_PROP, "pwebster");
// }
//
// /**
// * The second session doesn't activate the view, so it should not be
// * instantiated.
// *
// * @throws Throwable
// */
// public void testSecondOpening() throws Throwable {
// final IWorkbench workbench = PlatformUI.getWorkbench();
// final IWorkbenchPage page = workbench.getActiveWorkbenchWindow()
// .getActivePage();
// IEditorReference[] editors = page.getEditorReferences();
// for (int i = 0; i < editors.length; i++) {
// IEditorReference ref = editors[i];
// if (ref.getEditorInput().getName().equals("state.txt")) {
// assertNull("The editor should not be instantiated", ref
// .getPart(false));
// assertEquals("pwebster", ref.getPartProperty(USER_PROP));
// }
// }
// }
//
// static class PropListener implements IPropertyChangeListener {
// public int count = 0;
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
// */
// public void propertyChange(PropertyChangeEvent event) {
// count++;
// }
// };
//
// /**
// * Activate the view and it's state should re-appear.
// *
// * @throws Throwable
// */
// public void testPartInstantiation() throws Throwable {
// final IWorkbench workbench = PlatformUI.getWorkbench();
// final IWorkbenchPage page = workbench.getActiveWorkbenchWindow()
// .getActivePage();
//
// IEditorReference ref = null;
// IEditorReference[] editors = page.getEditorReferences();
// for (int i = 0; i < editors.length; i++) {
// if (editors[i].getEditorInput().getName().equals("state.txt")) {
// ref = editors[i];
// }
// }
//
// assertEquals("pwebster", ref.getPartProperty(USER_PROP));
// PropListener listener = new PropListener();
// ref.addPartPropertyListener(listener);
//
// try {
//
// IWorkbenchPart3 wp = (IWorkbenchPart3) ref.getPart(true);
// assertEquals("pwebster", wp.getPartProperty(USER_PROP));
// assertEquals(0, listener.count);
// } finally {
// ref.removePartPropertyListener(listener);
// }
//
// IEditorInput input = ref.getEditorInput();
//
// // the state should not be saved between a close and
// // an open in the same session
// page.closeEditor((IEditorPart) ref.getPart(true), false);
//
// TitleTestEditor editor = (TitleTestEditor) page.openEditor(input,
// EDITOR_ID);
// assertNull(editor.getPartProperty(USER_PROP));
// }
//}